草庐IT

GCD ③ dispatch_barrier

全部标签

ios - 如何使用 GCD 说明后台任务?

我想说明MBProgressHUD项目的进度,但是当我触发此方法时:-(IBAction)signInBttn:(id)sender{MBProgressHUD*hudd=[MBProgressHUDshowHUDAddedTo:self.viewanimated:YES];hudd.mode=MBProgressHUDModeAnnularDeterminate;hudd.labelText=@"Loading";__blockfloatvalue=0;for(intj=0;jhud完全显示为100%。这仅供我引用,我不知道如何创建计算某些东西的后台任务以及他何时完成例如40%HUD

ios - GCD中线程和队列是什么关系?

是否一个线程只包含一个队列?如果我向globalQueue异步分派(dispatch)一个block,它是否有机会在主线程上运行?什么样的情况会导致dispatch_sync死锁? 最佳答案 1.一个线程只包含一个队列吗?关系是一种方式。串行队列可能持有一个线程来执行分派(dispatch)给它的block,但线程不知道队列。嗯,主线程比较特殊,它知道主队列。我的猜测Dispatchqueue并没有指明它将在哪个线程上运行block或函数,我认为dispatchqueue管理一个包含许多线程的线程池,它会在一个block被调度时获取

ios - 主线程在 viewDidLoad 中的并发队列上执行 dispatch_async,或者在方法内执行事务

因此,在一些帮助下,我更加清楚嵌套GCD在我的程序中是如何工作的。原帖在:MakingsureI'mexplainingnestedGCDcorrectly但是,您不需要阅读原始帖子,但基本上这里的代码在后台运行数据库执行并且UI是响应式的:-(void)viewDidLoad{dispatch_queue_tconcurrencyQueue=dispatch_queue_create("com.epam.halo.queue",DISPATCH_QUEUE_CONCURRENT);dispatch_queue_tserialQueue=dispatch_queue_create("c

ios - 在 ARC 下使用 dispatch_write 将 NSData 写入后台唯一文件

我正在尝试创建一个具有唯一名称的文件并在后台向其写入数据。mktemp说只要有可能,就应该使用mkstemp(),因为它没有竞争条件。使用mkstemp会产生一个打开的文件描述符,因此dispatch_write似乎很明显。现在NSData必须使用dispatch_data_create包装在dispatch_data_t中。必须注意释放需要释放的内存,保留必须保留的内存。在ARC下,这不太明显。+(void)createUnique:(NSData*)contentname:(NSString*)nameextension:(NSString*)extensioncompletion

iOS GCD自定义并发队列执行顺序

我对这个问题有疑问,根据Apple的文档ConcurrentConcurrentqueues(alsoknownasatypeofglobaldispatchqueue)executeoneormoretasksconcurrently,buttasksarestillstartedintheorderinwhichtheywereaddedtothequeue.Thecurrentlyexecutingtasksrunondistinctthreadsthataremanagedbythedispatchqueue.Theexactnumberoftasksexecutingatan

iphone - 使用 GCD 填充 TableView 单元格

我刚开始使用GCD,我很难理解我在这里所做的是否是正确的做事方式。当我配置一个单元格时,我想从一个托管对象中提取一个URL,然后将一个block分派(dispatch)给GCD以下拉驻留在该URL处的缩略图图像。图像下载后,我将在第一个block中调度另一个block,将下载的缩略图放入单元格中。当表格出现在屏幕上时,我希望在每个单元格的缩略图中看到一个事件微调器,一旦完成下载,缩略图随后会替换为实际图像。实际发生的是,单元格出现在TableView中,但我看不到微调器。但是,如果我单击一个单元格,图像会突然出现。同样,如果我离开该View然后再次显示它。此外,当我上下滚动TableV

ios - UICollectionView 中的 GCD 和单元格重用

我有一个带有自定义UICollectionViewCell的UICollectionView实现。数据数组是从互联网上获取的,但图像是在用户访问内容时下载的。虽然这可能不是最有效的方法,而且我也不打算就此保留,但它确实暴露了我正在努力解决的某个问题。似乎单元格正在显示“缓存”或“旧”图像,当我慢慢滚动CollectionView时,单元格图像不断变化。这可能是一个问题,因为当时无法从网络上及时获得实际细胞图像,我的问题是如何强制使用空细胞或某些加载事件监视器而不显示不正确的图像?提前致谢,小齿轮-(UICollectionViewCell*)collectionView:(UIColl

ios - 为什么使用 GCD 和 block 进行 HTTP 下载?

在一次求职面试中,有人问我为什么要使用block和GCD而不是NSURLConnection来异步下载文件。经过一些研究,我还没有找到这样做的充分理由。我有多个应用程序,我只使用NSURLConnection就可以同时进行多个下载。他们的问题是试图确定我是否符合流行的任何东西(GCD、block),或者以这种方式进行异步提取是否有任何实际的、实质性的优势?谢谢。 最佳答案 在iOS7中,您通常不应使用基于block的方法来异步下载文件。为了支持后台传输,您必须将NSURLSession与委托(delegate)方法一起使用,并且不能

ios - NSMutableArray 线程并发与 GCD

我在“sharedStore”模式单例中有一个NSMutableArray。公开地,它只能通过将其转换为NSArray的方法访问。在类中,它是@property(nonatomic,copy)NSMutableArray*myItems;这个数组永远不会在单例之外被操作,但是ViewControllers发送单例消息来操作这个Controller。其中一些消息清空数组,一些重新填充它,等等。在一个方法调用中数组为空而在下一个方法调用中数组尚未为空的情况结束后,我开始实现一些并发行为。这是我目前所做的:在单例的.m文件中,我有一个@property(nonatomic,strong)di

ios - 在 dispatch_async 中收到内存警告

这是我在cellForRowAtIndex中编写的用于下载图像的代码:dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT,0),^{@autoreleasepool{__blockUIImage*img;__blockNSData*data;if(![messageDocument.SmallImageURLisEqual:@""]){data=[[NSDataalloc]initWithContentsOfURL:[NSURLURLWithString:messageDocument.Sma